home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib19b.dsk / HIDDEN FILE CREATION.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  116 lines

  1. 10  REM  ************************
  2. 20  REM  * HIDDEN.FILE.CREATION *
  3. 30  REM  *  BY  R.B. GOLDSTEIN  *
  4. 40  REM  *  COPYRIGHT (C) 1984  *
  5. 50  REM  *  BY MICROSPARC, INC. *
  6. 60  REM  *  LINCOLN, MA.  01773 *
  7. 70  REM  ************************
  8. 80 Y$ = "Y":N$ = "N":D$ =  CHR$(4):S$ = " "
  9. 90  HOME : VTAB 22: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 2: PRINT "TEXT FILE CREATION FOR HIDDEN LINES"
  10. 100  PRINT : INPUT "FILE NAME:";F$
  11. 110  PRINT : INPUT "NO. OF PTS.=";NP
  12. 120  INPUT "NO. OF EDGES=";NE
  13. 130  INPUT "NO. OF FACES=";NF
  14. 140  INPUT "ANY CHANGES (Y/N)?";Q$
  15. 150 Q$ =  LEFT$(Q$,1): IF Q$ < >Y$  AND Q$ < >N$  THEN 140
  16. 160  IF Q$ = Y$  THEN 100
  17. 170  DIM X(NP),Y(NP),Z(NP),F%(NF +1,1),E%(NE,4)
  18. 180  PRINT D$"OPEN"F$: PRINT D$"DELETE"F$: PRINT D$"OPEN"F$
  19. 190  PRINT D$"WRITE"F$: PRINT NP: PRINT NE: PRINT NF: PRINT D$"CLOSE"F$
  20. 200  REM  - FILE NAME IS TESTED EARLY
  21. 210  REM  - INPUT POINTS X,Y,Z
  22. 220  HOME : PRINT "TYPE X, Y, Z VALUES ON EACH LINE": PRINT 
  23. 230  FOR I = 1 TO NP: PRINT "POINT #"I":";: INPUT X(I),Y(I),Z(I): NEXT I
  24. 240  GOSUB 1130
  25. 250  ON C GOTO 260,320,380
  26. 260 I1 = 1:I2 = 20: IF NP <I2  THEN I2 = NP
  27. 270  HOME : FOR I = I1 TO I2: PRINT "POINT #"I":"X(I);S$;Y(I);S$;Z(I): NEXT I
  28. 280  INPUT "HIT RETURN TO CONTINUE...";H$
  29. 290  IF I2 = NP  THEN 240
  30. 300 I1 = I1 +20:I2 = I2 +20: IF NP <I2  THEN I2 = NP
  31. 310  GOTO 270
  32. 320  HOME : PRINT "TYPE '0' TO QUIT": INPUT "VALUE # TO BE CORRECTED:";V$
  33. 330 V =  VAL(V$): IF V = 0  AND V$ = "0"  THEN 240
  34. 340  IF V <1  OR V >NP  THEN 320
  35. 350  PRINT "OLD VALUES:";X$(V);S$;Y(V);S$;Z(V)
  36. 360  INPUT "NEW VALUES:";X(V),Y(V),Z(V): GOTO 320
  37. 370  REM  - INPUT FACE DESCRIPTIONS
  38. 380  HOME : PRINT "TYPE NO. OF PTS FOR EACH FACE #": PRINT 
  39. 390  FOR I = 1 TO NF: PRINT "FACE #"I":";: INPUT F%(I,0): NEXT I
  40. 400  GOSUB 1130
  41. 410  ON C GOTO 420,480,540
  42. 420 I1 = 1:I2 = 20: IF NF <I2  THEN I2 = NF
  43. 430  HOME : FOR I = I1 TO I2: PRINT "NO. OF PTS. ON FACE #"I":"F%(I,0): NEXT I
  44. 440  INPUT "HIT 'RETURN' TO CONTINUE...";H$
  45. 450  IF I2 = NF  THEN 400
  46. 460 I1 = I1 +20:I2 = I2 +20: IF NF <I2  THEN I2 = NF
  47. 470  GOTO 430
  48. 480  HOME : PRINT "TYPE '0' TO QUIT": INPUT "VALUE # TO BE CORRECTED:";V$
  49. 490 V =  VAL(V$): IF V = 0  AND V$ = "0"  THEN 400
  50. 500  IF V <1  OR V >NF  THEN 480
  51. 510  PRINT "OLD VALUE:";F%(V,0)
  52. 520  INPUT "NEW VALUE:";F$(V,0)
  53. 530  GOTO 480
  54. 540 F%(1,1) = 1: FOR I = 1 TO NF:F%(I +1,1) = F%(I,1) +F%(I,0): NEXT 
  55. 550 NT = F%(NF +1,1): DIM FP%(NT):L = 1
  56. 560  FOR I = 1 TO NF:K = F%(I,0)
  57. 570  HOME : PRINT "TYPE IN POINT NOS. FOR FACE #"I
  58. 580  PRINT "NO. OF PTS. ON THIS FACE=";K
  59. 590  FOR J = 1 TO K
  60. 600  PRINT "PT #"J;: INPUT FP%(L):L = L +1
  61. 610  NEXT J,I
  62. 620  GOSUB 1130
  63. 630  ON C GOTO 640,720,820
  64. 640 I1 = 1:I2 = 5: IF NF <I2  THEN I2 = NF
  65. 650  HOME : FOR I = I1 TO I2: PRINT "FACE #"I: PRINT "POINTS :";
  66. 660 K1 = F%(I,1):K2 = F%(I +1,1) -1: FOR K = K1 TO K2: PRINT FP%(K);S$;: NEXT K
  67. 670  PRINT : PRINT : NEXT I
  68. 680  INPUT "HIT 'RETURN' TO CONTINUE...";H$
  69. 690  IF I2 = NF  THEN 620
  70. 700 I1 = I1 +5:I2 = I2 +5: IF NF <I2  THEN I2 = NF
  71. 710  GOTO 650
  72. 720  HOME : PRINT "TYPE '0' TO QUIT": INPUT "FACE # TO BE CORRECTED:";V$
  73. 730 V =  VAL(V$): IF V = 0  AND V$ = "0"  THEN 620
  74. 740  IF V <1  OR V >NF  THEN 720
  75. 750  HOME : PRINT "FACE #"V" HAS "F%(V,0)" PTS."
  76. 760  PRINT "OLD VALUES :";
  77. 770 K1 = F%(V,1):K2 = F%(V +1,1) -1: FOR K = K1 TO K2
  78. 780  PRINT FP%(K);S$;: NEXT K
  79. 790  PRINT : PRINT : PRINT "NEW VALUES:"
  80. 800  FOR L = K1 TO K2: INPUT "PT #";FP%(L): NEXT : GOTO 720
  81. 810  REM  - INPUT EDGE DESCRIPTIONS
  82. 820  HOME : PRINT "NO. OF EDGES =";NE: PRINT : PRINT "FOR EACH EDGE GIVE TWO POINTS AND TWO   FACES OR ZEROS"
  83. 830  FOR I = 1 TO NE: PRINT : PRINT "EDGE #"I
  84. 840  INPUT "POINT #1:";E%(I,1)
  85. 850  INPUT "POINT #2:";E%(I,2)
  86. 860  INPUT "FACE #1:";E%(I,3)
  87. 870  INPUT "FACE #2:";E%(I,4)
  88. 880  NEXT 
  89. 890  GOSUB 1130
  90. 900  ON C GOTO 910,980,1050
  91. 910 I1 = 1:I2 = 5: IF NE <I2  THEN I2 = NE
  92. 920  HOME : FOR I = I1 TO I2: PRINT "EDGE #"I: PRINT "POINTS: "E%(I,1);S$;E%(I,2)
  93. 930  PRINT "FACES: "E%(I,3);S$;E%(I,4): PRINT : NEXT I
  94. 940  PRINT : INPUT "HIT 'RETURN' TO CONTINUE";H$
  95. 950  IF I2 = NE  THEN 890
  96. 960 I1 = I1 +5:I2 = I2 +5: IF NE <I2  THEN I2 = NE
  97. 970  GOTO 920
  98. 980  HOME : PRINT "TYPE '0' TO QUIT": INPUT "EDGE # TO BE CORRECTED:";V$
  99. 990 V =  VAL(V$): IF V = 0  AND V$ = "0"  THEN 890
  100. 1000  HOME : PRINT "EDGE #"V: PRINT "OLD POINTS:";E%(V,1);S$;E%(V,2): PRINT "OLD FACES:";E%(V,3);S$;E%(V,4): PRINT 
  101. 1010  INPUT "NEW POINTS :";E%(V,1),E%(V,2)
  102. 1020  INPUT "NEW FACES :";E%(V,3),E%(V,4)
  103. 1030  GOTO 980
  104. 1040  REM  - APPEND DISK FILE F$
  105. 1050  HOME : PRINT "FILE COMPLETED...WRITE TO DISK"
  106. 1060  PRINT D$"APPEND"F$: PRINT D$"WRITE"F$
  107. 1070  FOR I = 1 TO NP: PRINT X(I): PRINT Y(I): PRINT Z(I): NEXT 
  108. 1080  FOR I = 1 TO NF:K = F%(I,0): PRINT K:J1 = F%(I,1):J2 = J1 +K -1
  109. 1090  FOR J = J1 TO J2: PRINT FP%(J): NEXT J,I
  110. 1100  FOR I = 1 TO NE: FOR J = 1 TO 4: PRINT E%(I,J): NEXT J,I
  111. 1110  PRINT D$"CLOSE"F$
  112. 1120  END 
  113. 1130  HOME : PRINT "OPTIONS:"
  114. 1140  PRINT "(1) VIEW LIST": PRINT "(2) CORRECT VALUE(S)": PRINT "(3) CONTINUE"
  115. 1150  INPUT "CHOICE:";C: IF C <1  OR C >3  THEN 1130
  116. 1160 C =  INT(C): RETURN